home *** CD-ROM | disk | FTP | other *** search
- HISTORY of changes
-
- Syntax of this file: (from version 7)
- * Bug fix
- + New feature
- - Note/change
- : Obsolete stuff
-
- ------------------------------------------------------------------------------
-
- 7.0 - 940411. Release!
-
- + Added the funclib/ directory to the package. Refer to the 'README'
- file in there for funclib programming information!
-
- + Added funclib details in documentation. You should assign FPLLIBS:
- to the directory where you store your future funclibs.
-
- + [Amiga] Added fplOpenLib() and fplCloseLib() functions. They are
- the library equivalents to the FPL 'openlib' and 'closelib'
- functions. The library functions have though more power... (see
- docs)
-
- - [Amiga] 940407. Made the funclibs run from inside the library. Now
- there's only some manual work left before release!
-
- - [Amiga] I changed the way FPL opens dos.library. Previously is was
- opened and closed each time a file was to be loaded, now it is
- opened and closed together with FPL itself.
-
- + Added switch()-details in documentation.
-
- - Changed 'demo.FPL' slightly. It now uses switch(), and doesn't use
- 'double'...
-
- + Added two error messages.
-
- : Renamed all error code enums (in FPL.h). The old are obsolete (but
- can still be used) the new error codes are named FPLERR_*, so that
- there will be no more confusion...
-
- + FPL nows allocates the words "struct", "float", "double", "union"
- and "enum" to prevent users from being able to use them. They will
- most likely be used in future versions of FPL when such things
- become reality! (idea from Bernd Noll)
-
- - Rearranged more in the docs files. Now there are three .guide files.
- The FPLuser.guide file has been stripped and should be perfect to
- include in your software packages. The file FPL.README *should* be
- included in all softwares that use FPL. (on request from several)
-
- - (940315) All my test cases have now proved to work, and the switch()
- statement is *REALITY*! I know there are more than one of you out
- there that have looked forward to this enhancement, and here it
- is... I will of course have to increase the library version number
- again.
-
- * Fixed FPLSEND_STEP which did not work when giving negative numbers.
-
- * When an error occured within some kind of statement which had a
- string, that string could accidentaly get returned as a string
- return which could result in a serious error! (Only if
- FPLTAG_STRING_RETURN was used.)
-
- + Added the 'Makefile.SVR4'. This should create a shared library under
- all the SVR4 UNIXes AT&T, Consensys, Dell, ESIX, ISC, Microport,
- Micro Station Technology, Solaris v2, UHC, USL, Information
- Foundation, UnixWare and Onsite(!).
-
- + (Amiga) I added the source code of the already compiled library
- objects that I use to link with to create fpl.library. Now all
- sources exist that is used to build all shared libraries on all
- systems! (I know FPL has been almost impossible to compile using
- Dice on Amiga) Non-SAS users will have to create the function
- table pointed to by '_LibFuncTab' in libinit.c.
- (Requested by a whole lot!)
-
- * Bernd Noll (b_noll@sun.rhrk.un) helped me to make the SunOS (4.1.x)
- version to run without failing. *THANKS!*
-
- * Return optional return type did have some possible bugs.
-
- * (940307) Breaking out of a do-while loop has proved to never been
- working... I removed that feature today. (Kjell Ericson reported)
-
- * Yes, I did found out that the date in the 6.0 release says 5.2.93
- when it is supposed to be 5.2.94... We all do mistakes! :-)
-
- - Posted a "commercial text" in comp.sys.amiga.programmer which
- resulted in a lot of positive and interested responses...!
-
- + Added the binary 'SFPL' file to the package. A whole lot have
- troubles to compile it without SAS...
-
- + Enhanced the documentation. The "functions" and "keywords" chapters
- are much easier to find and move around in. (On request)
-
- + Added the 'FPLDATA_NESTED_COMMENT' tag to fplInit(). This enables
- nested comments in FPL programs. (On request)
-
- 6.0 - Kenneth Johansson reported that strings containing "//" did not
- work properly. I discovered that when FPL was passing code, it
- did read comments within strings as if they really were comments
- and could thereby miss the ending quote. Removed "feature"...
-
- - The file caching did not work as stated in the manual. The file
- was cached as default whatever the fplInit() tag
- 'FPLTAG_CACHEALLFILES' told. Should work now.
-
- - Had to rearrange some code when generating the FPL_GENERAL_ERROR
- call since OS/2 obviously had some trouble with doing as I was
- doing! The previous code:
-
- int foo=5;
- void **bar = &foo;
- printf("%d", (int)bar[0]);
-
- did work under AmigaDOS and UNIX outputting '5'. Under OS/2, the
- output become a very large number. The solution was to make it:
-
- int foo=5;
- void *bar[1];
- bar[0] = (void *)foo;
- printf("%d", (int)bar[0]);
-
-
- - I have removed all allowances to change FPL in this version.
- Previously, FPL was released under GNU license, but so is no
- longer the case! FPL is still Freeware, but may not be changed
- by anyone, except for porting procedures.
-
- - FPLTAG_STRING_RETURN is added. This is a fplExecuteXXXX() tag
- and it should be followed by a pointer to a char pointer.
- This tells FPL that the highest program level (the "main" level)
- is allowed to return a string which will be received in this
- pointer. exit() will be able to return strings from all levels.
- The returned string can be read and the FPL_STRLEN macro can be
- used to get the length of the string. The string must be freed
- with fplFreeString() (or will be done at 'fplFree()').
- Programs that are using this tag cannot return an int.
-
- - fplAllocString() allocates memory for sending a string to FPL.
- That is to prevent code like:
- {
- char *data= malloc(1000);
- strcpy(data, otherdata);
- fplSendTags(anchor, FPLSEND_STRING, data, TAG_DONE);
- free(data);
- }
-
- The enormous overhead when FPL also allocates and copies the
- data is avoided by the new:
- {
- char *data = fplAllocString(anchor, 1000);
- strcpy(data, otherdata);
- fplSendTags(anchor, FPLSEND_STRING, data,
- FPLSEND_DONTCOPY_STRING, TRUE,
- TAG_DONE);
- }
-
- - Currently I know about eight software projects around the globe
- that are using fpl.library (four of them are BBS programs!).
- Please, do notify me if you are using fpl.library and tell me
- about your program. I would also encourage at least users
- in Sweden to get the echo mail message area R20_FPL from us -
- fido address 2:201/328 (The Holy Grail +46-(0)8-6121258). (It
- will hopefully get on the backbone as soon as possible!)
-
- - Previous versions couldn't cache string-arrays, it ended up in
- serious enforcer-hits!
-
- - I split up the .guide file into FPLuser.guide and FPLlib.guide.
- All library functions are now put into fpl.doc which is in the
- good old autodoc format. Docs are now found in the "docs" drawer
- from the FPL root. The FPL root should be assigned FPL: to make
- the cross-reference between the two .guide files work. PLEASE,
- do report manual bugs!
-
- - As reported by Niclas Emdelius, FPLTAG_PROGNAME did not work
- correctly.
-
- 5.12 - (931217)
- The library grew larger because of the compiler support that are
- being inserted step by step. A future version is ment to be able
- to compile and to run compiled code.
-
- - Corrected some strange behaviours when defining or prototyping
- function names that already are used/defined. Now you can't
- define function names with names that exist as internal or
- external functions or keyword names. A function can only be
- defined once with one name, a second try will result in error.
- A Kjell Ericson report.
-
- - Strings containing \" (backslash quote) really messed things up.
- Fixed! A Kjell Ericson report.
-
- - Made all tagfunctions have proper 'tagcall' pragmas. Use all
- functions that accepts tags as their last parameter as:
- <FunctionName>Tags() and you won't need any glue-code when
- compiling with SAS/C and using tags.
-
- - Fixed the FPLTAG_INTERPRET tag a bit more since it didn't work...
- Thanks again to Lasse Mickos.
-
- 5.10 - FPLTAG_INTERPRET now works even if there is no real start of the
- code. Thanks to Lasse Mickos for reporting this bug.
-
- - FPLTAG_STOREGLOBALS has lost its point and now FPLTAG_CACHEFILE
- fully decides whether to store symbols.
-
- - The "struct fplArgument" has been extended with one more member.
- "ret" will contain the expected return type. All functions that
- return either 'int' or 'string' will find FPL_INTARG or
- FPL_STRARG there, but functions returning FPL_OPTARG can find
- either one depending on the expression in which the function is
- being used. DO RETURN THE TYPE THAT IS EXPTECTED, OTHERWISE YOU
- CONFUSE THE INTERPRETER!! If the "ret" is not what you expteced,
- do not hesitate to return an FPL syntax error, and if the "ret"
- field matches FPL_OPTARG, please return something to help the
- interpreter find the type of the expression.
-
- Earlier compilings will of course still work 100%.
-
- - Optional return types will now be recognized slightly different.
- If an expression expects a certain kind of return type, eg:
- "int a = FooBar();" (the expression to the right of the assign
- character is *expected* to return an int), that will be the
- default interpretation of the returned optional return type. If
- the returned type didn't match with the variable receiving it,
- a zero, for integers, or a zero length string ("") will be the
- result.
-
- - FPLSEND_GETRETURNCODE will only be able to call and get a proper
- result until a new fplExecute#?() call is made. It is then set
- to zero (0). A Kjell Ericson report.
-
- - The tags FPLTAG_CACHEFILE and FPLTAG_CACHEALLFILES have been
- modified. Previously they accepted a boolean data, but now they
- should be used using the more appropriate FPLCACHE defines.
- They are as following:
-
- FPLCACHE_NONE - Do not cache under any circumstances.
- FPLCACHE_ALWAYS - Cache if any symbols were global.
- FPLCACHE_EXPORTS - Cache if any symbols were exported.
-
- Earlier code will still work if it used 0 as FALSE and 1 as TRUE.
-
- - Expressions using a numerical variable and then a ">=" or "<="
- operator did act is if it was written ">>=" or "<<="!!!
- Reported by Niclas Emdelius.
-
- - Using '}' or '{' in declared functions, or other parts which
- should be passed in any way, did cause an FPL error. Kjell
- Ericson reported it.
-
- - Finding ASCII 10 inside a string did not work properly.
- Preprocessing a "\n" did make a zero length string when
- interpreted. Found by Kjell Ericson.
-
- - Functions that are defined to have one argument but are called
- with two now results in a 'syntax error' message instead of the
- earlier 'missing parenthesis'.
-
- - "\x" must be followed by at least one hexadecimal digit or
- fail with a syntax error.
-
- - Expressions are now slightly faster interpreted.
-
- - Do notice that I'm now available for email at dast@sth.frontec.se!!!
-
- v5.8 - strcmp("foo", "foobar"); did act as if this is a match!
- Reported by Niclas Emdelius.
-
- - Executed nested files with global/exported symbols could end up
- in a never-ending loop...
-
- v5.7 - (930912)
-
- - FPL now supports external functions with optional return types.
- FPL_OPTARG should now be a valid return code type of an external
- function. If this is used, FPL will do its best to determine the
- right return type. Help this out by always fplSend() a return
- value when using the opitional return type since FPL builts its
- guess heavliy upon that type.
-
- - The "==" bug just became different, but now I think I have
- removed that feature for ever!
-
- v5.6 - (930908)
-
- - I hopefully removed that nasty bug that sometimes made FPL crash
- when the interface funtion doesn't fplSend() any return value.
-
- - Using a string in a (o)ptional parameter argument, did in certain
- circumstances return a NULL pointer instead of a zero length
- string, which was not described in the manual. Now it's corrected
- and returns a zero length string.
-
- - An integer as last parameter in a function call, combined with a
- "==" comparison like: "if(foobar(hello)==12)" was giving an
- "illegal assign error" since FPL tried to interpret ")=" as some
- kind of compound assign! Fixed.
-
- v5.5 - (930827)
-
- - The itoc() function was added today. This could be done
- very easy by external function(s), but I think that FPL needs
- that to be more independent.
-
- - (930824) The '!=' operator works now.
-
- - FPL now supports the #line - instruction! See FPL.guide regarding
- preprocessing, line control and the FPLSEND_GETVIRLINE and
- FPLSEND_GETVIRFILE tags.
-
- - Back from a long vacation in South East Asia.
-